#ifndef PROJECTION_H
#define PROJECTION_H

class Scene;
class Vertex;
class Projection {
public:
    virtual ~Projection();
    virtual Scene* apply(Scene *scene, const Vertex &, const Vertex &, float, float) { return scene; }
};

class PerspectiveProjection: public Projection {
public:
    virtual Scene* apply(Scene *scene, const Vertex &observer, const Vertex &focus, float zoom, float roll);
};

class IsometrictProjection: public Projection {
public:
    virtual Scene* apply(Scene *scene, const Vertex &, const Vertex &, float, float);
};

#endif // PROJECTION_H

